package com.cetcs.kmga.dataManager.dao.mybatis;

import com.cetcs.kmga.dataManager.entity.device.vo.KeyAndValueVo;
import com.cetcs.kmga.dataManager.entity.global.AlarmCode;
import com.cetcs.kmga.dataManager.entity.global.CodeAndValue;
import com.cetcs.kmga.dataManager.entity.global.CodeType;
import com.cetcs.kmga.dataManager.entity.sysCode.CodeCacheLog;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 码表通用接口
 *
 * @author xutao
 * @version V1.0 创建时间：2017-09-20 11:30
 *          Copyright 2017 by CETC
 */
@Repository
public interface FeatureCodeMapper {

    /**
     * 查询某种类型的所有码
     *
     * @param typeId 类型ID
     * @return
     */
    List<AlarmCode> findFeatureCodesByTypeId(Integer typeId);

    /**
     * 根据名称或ID查询出对应的值
     *
     * @param typeId 类型ID
     * @param code   编码值
     * @param name   名称
     * @return
     */
    List<AlarmCode> findFeatureCodeByIdOrName(@Param("typeId") Integer typeId, @Param("code") String code, @Param("name") String name);


    List<CodeAndValue> findAllOperTypeFeatureCodes();

    /**
     * 根据类型ID批量查询
     *
     * @param typeIds
     * @return
     */
    List<CodeType> findFeatureCodesByTypeIds(@Param("typeIds") String typeIds);

    /**
     * 查询出所有的特征码信息
     *
     * @return
     */
    List<AlarmCode> findAllFeatureCodes();

    /**
     * 获取所有资源的代码值
     *
     * @return
     */
    List<AlarmCode> findAllResourceCodes();

    /**
     * 获取所有的设备
     *
     * @return
     */
    List<AlarmCode> findAllDevices();

    List<AlarmCode> findDevicesByDeviceType(String deviceType);


    List<KeyAndValueVo> findAllSysClientClusters();

    /**
     * 查询上层的集群
     * @return
     */
    List<KeyAndValueVo> findUpSysClientClusters();

    /**
     * 保存码表加载日志
     *
     * @param record
     * @return
     */
    int createCacheCodeLog(CodeCacheLog record);
}
